import pygame

from plane_sprites import GameSprites

# 初始化pygame
# 初始化pygame中所有的模块
pygame.init()

# 创建游戏的窗口
# 参数1: 是一个元组,代表宽度和高度
screen = pygame.display.set_mode((480, 700))

# 绘制背景
# 1> 加载图像
bg = pygame.image.load('./images/background.png')
# 2> blit 绘制图像及其位置
screen.blit(bg, (0, 0))
# 3> update 更新屏幕显示(可以在所有图形绘制之后同一更新屏幕)
# pygame.display.update()

# 绘制英雄飞机
me = pygame.image.load('./images/me1.png')
# 创建英雄飞机Rect
me_Rect = pygame.Rect(150, 550, 102, 126)
screen.blit(me, me_Rect)

# 使用精灵创建敌机
enemy = GameSprites('./images/enemy1.png')
enemy2 = GameSprites('./images/enemy1.png', 2)

# 创建精灵组
enemy_list = pygame.sprite.Group(enemy, enemy2)

# update 更新屏幕显示
pygame.display.update()

# 创建游戏时钟对象
clock = pygame.time.Clock()

# 游戏循环 -> 意为这游戏的开始
while True:

    # 意思是 1秒执行多少次(帧率)
    # 并且该游戏时钟是同步程序
    clock.tick(60)

    event_list = pygame.event.get()
    for event in event_list:
        # 点击关闭
        if event.type == pygame.QUIT:
            # 卸载所有的模块
            pygame.quit()
            # 直接结束系统
            exit()

    # 向上移动
    me_Rect.y -= 1
    if me_Rect.y <= -126:
        me_Rect.y = 700
    # 绘制图像
    # blit的第二个参数也可以传递Rect图形
    # 如果第二个参数是一个图型,那么他使用的只是图形的坐标而已
    screen.blit(bg, (0, 0))
    screen.blit(me, me_Rect)
    # 使用精灵族
    # update 会执行所有精灵的update方法
    enemy_list.update()
    # 将精灵族中的精灵绘制到窗口上
    # 参数:游戏屏幕窗口
    enemy_list.draw(screen)

    # update 屏幕
    pygame.display.update()
